/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.example.android.threadsample; import android.content.Context; import android.content.Intent; import android.support.v4.content.LocalBroadcastManager; public class BroadcastNotifier { private LocalBroadcastManager mBroadcaster; /** * Creates a BroadcastNotifier containing an instance of LocalBroadcastManager. * LocalBroadcastManager is more efficient than BroadcastManager; because it only * broadcasts to components within the app, it doesn't have to do parceling and so forth. * * @param context a Context from which to get the LocalBroadcastManager */ public BroadcastNotifier(Context context) { // Gets an instance of the support library local broadcastmanager mBroadcaster = LocalBroadcastManager.getInstance(context); } /** * * Uses LocalBroadcastManager to send an {@link Intent} containing {@code status}. The * {@link Intent} has the action {@code BROADCAST_ACTION} and the category {@code DEFAULT}. * * @param status {@link Integer} denoting a work request status */ public void broadcastIntentWithState(int status) { Intent localIntent = new Intent(); // The Intent contains the custom broadcast action for this app localIntent.setAction(Constants.BROADCAST_ACTION); // Puts the status into the Intent localIntent.putExtra(Constants.EXTENDED_DATA_STATUS, status); localIntent.addCategory(Intent.CATEGORY_DEFAULT); // Broadcasts the Intent mBroadcaster.sendBroadcast(localIntent); } /** * Uses LocalBroadcastManager to send an {@link String} containing a logcat message. * {@link Intent} has the action {@code BROADCAST_ACTION} and the category {@code DEFAULT}. * * @param logData a {@link String} to insert into the log. */ public void notifyProgress(String logData) { Intent localIntent = new Intent(); // The Intent contains the custom broadcast action for this app localIntent.setAction(Constants.BROADCAST_ACTION); localIntent.putExtra(Constants.EXTENDED_DATA_STATUS, -1); // Puts log data into the Intent localIntent.putExtra(Constants.EXTENDED_STATUS_LOG, logData); localIntent.addCategory(Intent.CATEGORY_DEFAULT); // Broadcasts the Intent mBroadcaster.sendBroadcast(localIntent); } }